package demo.module_login.contract;

import org.json.JSONObject;

import demo.module_login.m.data.UserInfo;
import library.base.mvp.IContract;
import library.base.mvp.module.BaseModule;
import library.net.retrofit.exception.RxException;

/**
 * @author Created by qiang.hou on 2018/11/30.
 * @version 1.0
 */
public interface ILoginContract {
    interface IView {

        /**
         * 获取验证码按钮开始倒计时
         */
        void setSmsCodeCountdown();

        /**
         * 控制获取验证码按钮是否可用
         *
         * @param b 是否可用
         */
        void setSmsCodeButtonEnable(boolean b);

        /**
         * 进入主页
         */
        void goMain();

    }

    interface IPresenter {

        /**
         * 密码登录/短信验证码登录
         *
         * @param phone           用户名/手机号
         * @param x               密码/验证码
         * @param isPasswordLogin 是否是密码登录
         */
        void login(String phone, String x, boolean isPasswordLogin);

        /**
         * 获取短信验证码(先检查手机号是否注册)
         *
         * @param phoneNumber 手机号
         */
        void sendSMSCode(final String phoneNumber);

    }

    interface IModel {

        /**
         * 用户名/手机号 登录
         *
         * @param userName 用户名/手机号
         * @param password 密码
         */
        void loginByPassword(String userName, String password, IContract.IModule.IModelObserver<UserInfo, RxException> responseObserver);

        /**
         * 验证码登录
         *
         * @param phone 手机号
         * @param code  验证码
         */
        void loginByCode(String phone, String code, IContract.IModule.IModelObserver<UserInfo, RxException> responseObserver);

        /**
         * 获取验证码
         *
         * @param phoneNumber 手机号
         */
        void getSmsCode(String phoneNumber, IContract.IModule.IModelObserver<Object, RxException> responseObserver);

        /**
         * 检查是否注册
         *
         * @param phone 手机号 或者用户名
         */
        void checkRegister(String phone, IContract.IModule.IModelObserver<JSONObject, RxException> responseObserver);
    }
}
